package busterminalweb.action.user;

import busterminalweb.action.Action;
import busterminalweb.action.ActionResult;
import busterminalweb.authorization.Authorization;
import busterminalweb.authorization.User;
import busterminalweb.authorization.service.Role;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Войти в систему
 */
public class UserLogin implements Action {

    /**
     * Константа для авторизации пользователя
     */
    private static String USER = "user";

    /**
     * Выполнить действие
     * @param request запрос
     * @param response ответ
     * @return страница, которой нужно передать управление
     */
    @Override
    public ActionResult execute(HttpServletRequest request, HttpServletResponse response) {

        String login = request.getParameter("login");
        String password = request.getParameter("password");
        if (login != null && password != null) {
            Authorization authorization = new Authorization();
            if (authorization.isValidLogin(login, password)) {
                User user = authorization.getUser(login, password);
                request.getSession().setAttribute(USER, user);
                setDefaultPage(user, request);
            }
        }

        //main - это action, который никак сервлетом не обрабатывается,
        //т.е. открывается главная страница
        return ActionResult.redirect("main");
    }

    /**
     * Получить имя действия
     * @return имя действия
     */
    @Override
    public String getName() {
        return "user.login";
    }

    private void setDefaultPage(User user, HttpServletRequest request) {
        if (user.getRole() == Role.ADMINISTRATOR) {
            request.getSession().setAttribute("defaultPage", "user-list");
        } else if (user.getRole() == Role.MAIN_DISPATCHER || user.getRole() == Role.DISPATCHER) {
            request.getSession().setAttribute("defaultPage", "trip-list");
        } /*else if (user.getRole() == Role.PASSENGER) {
            request.getSession().setAttribute("defaultPage", "scheduled-item-list");
        }*/
    }
}